package com.lsy.poi.row.validator;

import org.apache.poi.xssf.usermodel.XSSFRow;

import com.lsy.poi.exception.ParseException;
import com.lsy.poi.exception.row.UnexpectedCellSizeException;

/*TODO: 这个功能 有点鸡肋
 * 1、貌似 和 RowParser.gatherCellValues(CellParser[]) 补 null 的 逻辑 相 违背 
 * 2、可以使用 cell 维度的 cellValidator 来 代替么？
 */
/**
 * 验证：当前 row 所 包含的 cell 的 个数 是否 等于 期望值
 *
 */
public class CellSizeValidator extends RowValidator {
	
	
	/** 所期望的 cell 的 个数*/
	private int expectedSize;


	public CellSizeValidator(int expectedSize) {
		super();
		this.expectedSize = expectedSize;
	}


	@Override
	public void doValidate(Object[] cellValues, XSSFRow row) throws ParseException  {
		
		String currentKey = row.getSheet().getSheetName() + "→" + row.getRowNum();
		
		if(expectedSize != cellValues.length) {
			throw new UnexpectedCellSizeException(row, currentKey, expectedSize, cellValues.length);
		}
		
	}


}
